export default function() {
    return {
        props: {
            // 父组件传参统一对象
            dataJson: {
                type: Object,
                default: {}
            }
        },
        data() {
            return {
                // 动态的属性
                dynamicData: {},
            }
        },
        mounted() {
            this.init()
        },
        methods: {
            /**
             * 初始化
             * 1、将暴露在外的表单属性转化为组件动态属性
             * 2、将父组件的传参同步到组件中
             */
            init() {
                Object.keys(this.interfaceAttrs).forEach(item => {
                    this.$set(this.dynamicData, item, this.interfaceAttrs[item].default)
                })
                if (this.dataJson && typeof this.dataJson === 'object') {
                    this.dynamicData = {...this.dynamicData, ...this.dataJson}
                }
            },
            // 在父组件调用，用父组件传入的参数更新组件数据
            updateData(data) {
                if (data) {
                    Object.keys(data).forEach(item => {
                        if (this.interfaceAttrs[item]) {
                            // 更新组件自身数据
                            this.dynamicData[item] = data[item]
                            // 同步更新对外参数的值，避免其他组件拿到的还是旧数据
                            this.interfaceAttrs[item].default = data[item]
                        }
                    })
                    this.$forceUpdate();
                    if(this.$refs.dataV && this.$refs.dataV.autoResizeMixinInit){
                        this.$refs.dataV.autoResizeMixinInit()
                    }
                }
            },
        }
    }
}
